Option Explicit

' 默认值: entity 管理 sheet 的名称
Private Const ENTITY_INFO_SHEET_NAME As String = "entityList"
' 默认值: item 管理 sheet 的名称
Private Const ITEM_INFO_SHEET_NAME As String = "entityItems"
' 默认值: entity 管理 sheet 的起始行的行号
Private Const ENTITY_INFO_START_ROWNO As Integer = 4
' 默认值: item 管理 sheet 的起始行的行号
Private Const ITEM_INFO_START_ROWNO As Integer = 4
' 默认值: entity 的逻辑名称所在的列号
Private Const ENTITY_LOGIC_NAME_COLNO As String = "C"
' 默认值: item 的逻辑名称所在的列号
Private Const ITEM_LOGIC_NAME_COLNO As String = "C"
' 默认值: entity 的物理名称所在的列号
Private Const ENTITY_PHY_NAME_COLNO As String = "D"
' 默认值: item 的物理名称所在的列号
Private Const ITEM_PHY_NAME_COLNO As String = "D"
' 默认值: item entity 的逻辑名称所在的列号
Private Const ITEM_ENTITY_LOGIC_NAME_COLNO As String = "B"

Public Sub main()
    Dim wb As Workbook
    Set wb = ActiveWorkbook

    Dim form As VBComponent

    ' ==================================================
    ' 1. 设置 form 的属性
    ' ==================================================
    Set form = wb.VBProject.VBComponents.Item("SqlTranslateForm")
    With form
        .Properties("Height") = 500
        .Properties("Width") = 486.15
        .Properties("Caption") = "sql translate"
    End With

    Dim ctrs As Controls
    Set ctrs = form.Designer.Controls

    ' ==================================================
    ' 2. 第一行
    ' ==================================================
    ' 1. 设置 entity 管理 sheet 的名称
    '    标题
    UtilsControl.createLabel ctrs, "entityInfoSheetNameTitle", _
        18, 96, 18, 24, caption:="entityInfoSheetName", fontSize:=9

    '    输入框
    UtilsControl.createTextBox ctrs, "entityInfoSheetName", _
        18, 108, 120, 18, _
        fontSize:=9, text:=ENTITY_INFO_SHEET_NAME, value:=ENTITY_INFO_SHEET_NAME, tabIndex:=1

    ' 2. 设置 item 管理 sheet 的名称
    '    标题
    UtilsControl.createLabel ctrs, "itemInfoSheetNameTitle", _
        18, 78, 252, 24, caption:="itemInfoSheetName", fontSize:=9

    '    输入框
    UtilsControl.createTextBox ctrs, "itemInfoSheetName", _
        18, 108, 336, 18, _
        fontSize:=9, text:=ITEM_INFO_SHEET_NAME, value:=ITEM_INFO_SHEET_NAME, tabIndex:=5

    ' ==================================================
    ' 3. 第二行
    ' ==================================================
    ' 1. 设置 entity 管理 sheet 的起始行的行号 (默认值=4)
    '    标题
    UtilsControl.createLabel ctrs, "entityInfoStartRowTitle", _
        18, 84, 18, 48, caption:="entityInfoStartRow", fontSize:=9

    '    输入框
    UtilsControl.createTextBox ctrs, "entityInfoStartRow", _
        18, 108, 120, 48, _
        fontSize:=9, text:=ENTITY_INFO_START_ROWNO, value:=ENTITY_INFO_START_ROWNO, tabIndex:=2

    ' 2. 设置 item 管理 sheet 的起始行的行号 (默认值=4)
    '    标题
    UtilsControl.createLabel ctrs, "itemInfoStartRowTitle", _
        18, 78, 252, 48, caption:="itemInfoStartRow", fontSize:=9

    '    输入框
    UtilsControl.createTextBox ctrs, "itemInfoStartRow", _
        18, 108, 336, 42, _
        fontSize:=9, text:=ITEM_INFO_START_ROWNO, value:=ITEM_INFO_START_ROWNO, tabIndex:=6

    ' ==================================================
    ' 4. 第三行
    ' ==================================================
    ' 1. 设置 entity 的逻辑名称所在的列号
    '    标题
    UtilsControl.createLabel ctrs, "entityLogicNameColTitle", _
        18, 84, 18, 78, caption:="entityLogicNameCol", fontSize:=9

    '    输入框
    UtilsControl.createTextBox ctrs, "entityLogicNameCol", _
        18, 108, 120, 72, _
        fontSize:=9, text:=ENTITY_LOGIC_NAME_COLNO, value:=ENTITY_LOGIC_NAME_COLNO, tabIndex:=3

    ' 2. 设置 item 的逻辑名称所在的列号
    '    标题
    UtilsControl.createLabel ctrs, "itemLogicNameColTitle", _
        18, 84, 246, 72, caption:="itemLogicNameCol", fontSize:=9

    '    输入框
    UtilsControl.createTextBox ctrs, "itemLogicNameCol", _
        18, 108, 336, 66, _
        fontSize:=9, text:=ITEM_LOGIC_NAME_COLNO, value:=ITEM_LOGIC_NAME_COLNO, tabIndex:=7

    ' ==================================================
    ' 5. 第四行
    ' ==================================================
    ' 1. 设置 entity 的物理名称所在的列号
    '    标题
    UtilsControl.createLabel ctrs, "entityPhyNameColTitle", _
        18, 84, 18, 102, caption:="entityPhyNameCol", fontSize:=9

    '    输入框
    UtilsControl.createTextBox ctrs, "entityPhyNameCol", _
        18, 108, 120, 96, _
        fontSize:=9, text:=ENTITY_PHY_NAME_COLNO, value:=ENTITY_PHY_NAME_COLNO, tabIndex:=4


    ' 2. 设置 item 的物理名称所在的列号
    '    标题
    UtilsControl.createLabel ctrs, "itemPhyNameColTitle", _
        18, 72, 252, 96, caption:="itemPhyNameCol", fontSize:=9

    '    输入框
    UtilsControl.createTextBox ctrs, "itemPhyNameCol", _
        18, 108, 336, 90, _
        fontSize:=9, text:=ITEM_PHY_NAME_COLNO, value:=ITEM_PHY_NAME_COLNO, tabIndex:=8

    ' ==================================================
    ' 6. 第五行
    ' ==================================================
    ' 1. tips
    '    标题
    UtilsControl.createLabel ctrs, "tipsTitle", _
        12, 30, 18, 120, caption:="tips", fontSize:=9

    '   输入框
    UtilsControl.createTextBox ctrs, "tips", _
        42, 204, 18, 138, _
        fontSize:=9, tabIndex:=11, scrollBars:=2, multiLine:=True

    ' 2. 设置 item entity 的逻辑名称所在的列号
    '    标题
    UtilsControl.createLabel ctrs, "itemEntityLogicNameColTitle", _
        18, 96, 234, 120, caption:="itemEntityLogicNameCol", fontSize:=9

    '    输入框
    UtilsControl.createTextBox ctrs, "itemEntityLogicNameCol", _
        18, 108, 336, 114, _
        fontSize:=9, text:=ITEM_ENTITY_LOGIC_NAME_COLNO, value:=ITEM_ENTITY_LOGIC_NAME_COLNO, tabIndex:=9

    ' 3. 设置 item entity 的物理名称所在的列号
    '    标题
    UtilsControl.createLabel ctrs, "itemEntityPhyNameColTitle", _
        18, 102, 240, 144, caption:="itemEntityPhyNameCol", fontSize:=9

    '    输入框
    UtilsControl.createTextBox ctrs, "itemEntityPhyNameCol", _
        18, 108, 336, 138, _
        fontSize:=9, tabIndex:=10

    ' ==================================================
    ' 7. 第六行
    ' ==================================================
    ' 1. 原始 sql
    '    标题
    UtilsControl.createLabel ctrs, "originSqlTitle", _
        18, 96, 18, 198, caption:="originSql", fontSize:=9

    '   输入框
    UtilsControl.createTextBox ctrs, "originSql", _
        69, 444, 18, 222, _
        fontSize:=9, tabIndex:=12, scrollBars:=2, multiLine:=True

    ' ==================================================
    ' 8. 第七行
    ' ==================================================
    ' 1. 转换后的 sql
    '    标题
    UtilsControl.createLabel ctrs, "translatedSqlTitle", _
        18, 96, 18, 300, caption:="translatedSql", fontSize:=9

    '   输入框
    UtilsControl.createTextBox ctrs, "translatedSql", _
        69, 444, 18, 324, _
        fontSize:=9, tabIndex:=13, scrollBars:=2, multiLine:=True

    ' ==================================================
    ' 8. 底部按钮
    ' ==================================================
    ' 1. 将sql中的名称转换为逻辑名称
    UtilsControl.createButton ctrs, "ToLogicSqlBtn", _
        30, 102, 36, 414, _
        caption:="ToLogicSql", fontSize:=9, tabIndex:=21

        ' 2. 将sql中的名称转换为物理名称
    UtilsControl.createButton ctrs, "ToPhySqlBtn", _
        30, 102, 162, 414, _
        caption:="ToPhySql", fontSize:=9, tabIndex:=22
End Sub
